package com.yhl.springtest.proxy_dynamic;


import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;

/**
 * @author: yanghl
 * @description: TODO
 * @date: 2023/8/15 17:08
 */
public class Test {
    public static void main(String[] args) {
        // 创建一个实例对象，这个对象是被代理的对象
        Person yhl = new Student("yhl");

        // 创建一个与代理对象相关联的InvocationHandler
        InvocationHandler studentInvocationHandler = new StudentInvocationHandler<Person>(yhl);

        // 创建一个代理对象stuProxy来代理yhl，代理对象的每个执行方法都会替换执行Invocation中的invoke方法
        Person stuProxy = (Person)Proxy.newProxyInstance(Person.class.getClassLoader(), new Class<?>[]{Person.class}, studentInvocationHandler);

        stuProxy.giveTask();
    }

}

